import os
import subprocess
import pytest

if __name__ == '__main__':
    test_directory = "./test_case"
    allure_json_dir = "./report/json"
    allure_html_dir = "./report/html"
    # 确保报告目录存在
    os.makedirs(allure_json_dir, exist_ok=True)
    os.makedirs(allure_html_dir, exist_ok=True)

    # 运行 pytest 并生成 JSON 报告
    print("开始执行测试用例...")
    exit_code = pytest.main([test_directory, "-sv", "--alluredir", allure_json_dir])
    if exit_code != 0:
        print(f"测试执行出现问题，退出码：{exit_code}")

    # 生成 HTML 报告
    try:
        subprocess.run(f"allure generate {allure_json_dir} -o {allure_html_dir} --clean", shell=True, check=True)
        print(f"HTML 报告已生成在 {allure_html_dir}")
    except subprocess.CalledProcessError as e:
        print(f"Allure 生成 HTML 报告失败: {e}")

        # 可选：后台打开报告（不阻塞 main.py）
    try:
        subprocess.Popen(f"allure open {allure_html_dir}", shell=True)
        print("Allure 报告已在后台打开，脚本将继续退出")
    except Exception as e:
        print(f"Allure 打开 HTML 报告失败: {e}")